Filtering Collections

Java Technologies - অ্যাপাচি কমন্স কালেকশনস (Apache Common Collection) CollectionUtils এর উন্নত ব্যবহার |
128
128

Apache Commons Collections লাইব্রেরি একটি শক্তিশালী টুল যা Java ডেভেলপারদের জন্য বিভিন্ন কার্যকরী ইউটিলিটি প্রদান করে। এর মধ্যে একটি গুরুত্বপূর্ণ বৈশিষ্ট্য হল Filtering Collections। এটি কালেকশনগুলির মধ্যে নির্দিষ্ট শর্তে উপাদান ফিল্টার করার জন্য ব্যবহৃত হয়।

Filtering Collections একটি শক্তিশালী এবং নমনীয় প্রক্রিয়া যা কালেকশনের উপাদানগুলিকে নির্দিষ্ট শর্তের উপর ভিত্তি করে নির্বাচন বা বাদ দিতে সাহায্য করে। আপনি predicate ব্যবহার করে এক বা একাধিক শর্তের ভিত্তিতে উপাদানগুলিকে ফিল্টার করতে পারেন।

Filtering Collections: কীভাবে কাজ করে?

Filtering কালেকশনকে একটি শর্ত বা predicate দ্বারা ফিল্টার করা হয়। Predicate হল একটি ফাংশনাল প্রোগ্রামিং কনসেপ্ট যা একটি ইনপুট গ্রহণ করে এবং একটি বুলিয়ান মান (true/false) রিটার্ন করে। এটি নির্ধারণ করে যে কোন উপাদানটি সংগ্রহের মধ্যে থাকবে এবং কোনটি বাদ যাবে।

Apache Commons Collections এ Filtering করার উপায়

Apache Commons Collections লাইব্রেরিতে CollectionUtils.select() এবং CollectionUtils.filter() এর মতো মেথড রয়েছে যা collections ফিল্টার করতে ব্যবহৃত হয়।


CollectionUtils.select()

CollectionUtils.select() মেথডটি একটি predicate এর মাধ্যমে একটি কালেকশনের উপাদানগুলিকে নির্বাচন করে। এটি একটি নতুন কালেকশন তৈরি করে যা শুধুমাত্র সেই উপাদানগুলো ধারণ করে যেগুলি predicate শর্তে পাস করে।

Usage Example: CollectionUtils.select()

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;

import java.util.Arrays;
import java.util.List;

public class FilteringExample {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("apple", "banana", "orange", "avocado");

        // Define the predicate (filter out strings starting with 'a')
        Predicate<String> startsWithA = new Predicate<String>() {
            @Override
            public boolean evaluate(String object) {
                return object.startsWith("a");
            }
        };

        // Use CollectionUtils.select to filter the list
        List<String> filteredList = (List<String>) CollectionUtils.select(list, startsWithA);

        // Print the filtered list
        System.out.println("Filtered List: " + filteredList);
    }
}

Output:

Filtered List: [apple, avocado]

ব্যাখ্যা:

  • startsWithA একটি predicate যা শুধুমাত্র সেই উপাদানগুলো নির্বাচন করে যেগুলির নাম "a"-এ শুরু হয়।
  • CollectionUtils.select() মেথডটি নতুন একটি কালেকশন তৈরি করেছে, যেটিতে শুধুমাত্র "apple" এবং "avocado" রয়েছে।

CollectionUtils.filter()

CollectionUtils.filter() মেথডটি একটি predicate ব্যবহার করে একটি কালেকশনের উপাদানগুলি ফিল্টার করে এবং এতে শুধুমাত্র সেই উপাদানগুলো রাখে যা শর্তে পাস করে। এটি মূল কালেকশনেই পরিবর্তন ঘটায় এবং একটি নতুন কালেকশন রিটার্ন করে না।

Usage Example: CollectionUtils.filter()

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;

import java.util.Arrays;
import java.util.List;

public class FilteringExample {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("apple", "banana", "orange", "avocado");

        // Define the predicate (filter out strings starting with 'a')
        Predicate<String> startsWithA = new Predicate<String>() {
            @Override
            public boolean evaluate(String object) {
                return object.startsWith("a");
            }
        };

        // Use CollectionUtils.filter to filter the list
        CollectionUtils.filter(list, startsWithA);

        // Print the filtered list (modified original list)
        System.out.println("Filtered List: " + list);
    }
}

Output:

Filtered List: [apple, avocado]

ব্যাখ্যা:

  • এখানে CollectionUtils.filter() মেথডটি সরাসরি list এর উপাদানগুলো ফিল্টার করেছে এবং শুধুমাত্র সেই উপাদানগুলো রেখেছে যেগুলো predicate শর্তে পাস করেছে।
  • মূল list পরিবর্তিত হয়েছে এবং apple এবং avocado রেখেছে।

CollectionUtils.filter() এবং CollectionUtils.select() এর মধ্যে পার্থক্য

FeatureCollectionUtils.select()CollectionUtils.filter()
Return ValueReturns a new collection with the filtered elements.Modifies the original collection in place.
UsageWhen you need a new collection with filtered elements.When you want to modify the original collection directly.
Thread SafetyNo impact on thread safety since it returns a new collection.Modifies the collection directly, so thread safety is important.

Predicate Filtering Example

Predicate হল একটি ইন্টারফেস যা একটি শর্ত নির্ধারণ করে এবং true অথবা false রিটার্ন করে। এটি একটি খুবই শক্তিশালী কৌশল যা কালেকশনের উপাদানগুলিতে শর্ত প্রয়োগ করতে ব্যবহৃত হয়। নিচে একটি উদাহরণ দেওয়া হল যেখানে Predicate ব্যবহার করা হয়েছে:

Predicate Filtering Example:

import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.collections4.Predicate;

import java.util.Arrays;
import java.util.List;

public class PredicateFilteringExample {
    public static void main(String[] args) {
        List<String> list = Arrays.asList("apple", "banana", "avocado", "grape");

        // Predicate to select strings that contain the letter 'a'
        Predicate<String> containsA = new Predicate<String>() {
            @Override
            public boolean evaluate(String object) {
                return object.contains("a");
            }
        };

        // Use CollectionUtils.select to filter based on the predicate
        List<String> filteredList = (List<String>) CollectionUtils.select(list, containsA);

        // Print the filtered list
        System.out.println("Filtered List: " + filteredList);
    }
}

Output:

Filtered List: [apple, banana, avocado]

ব্যাখ্যা:

  • এখানে, Predicate ব্যবহার করা হয়েছে যেটি কেবলমাত্র সেই উপাদানগুলো নির্বাচন করে যেগুলিতে 'a' চরিত্র রয়েছে।
  • CollectionUtils.select() মেথডটি শুধুমাত্র সেই উপাদানগুলো ফিরিয়ে দিয়েছে।

Filtering Collections বা কালেকশন ফিল্টারিং একটি শক্তিশালী টুল যা CollectionUtils.select() এবং CollectionUtils.filter() মেথডের মাধ্যমে সহজেই করা যায়। এই মেথডগুলো আপনাকে predicate ব্যবহার করে শর্তানুসারে কালেকশনের উপাদানগুলো ফিল্টার করতে সহায়তা করে। select() একটি নতুন কালেকশন রিটার্ন করে, যেখানে filter() মূল কালেকশনটিকে সরাসরি পরিবর্তন করে। আপনি যখন বড় ডেটা সেটের উপরে কার্যকরভাবে শর্ত প্রয়োগ করতে চান তখন এই ফিল্টারিং কৌশলগুলি খুবই উপকারী।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion